package com.mokairui.basic.waitnotify;

/**
 * @author Mokairui
 * @Description wait:让出锁进入等待 notify:随机唤醒一个等待线程 notifyAll:唤醒所有的等待线程
 *              wait(1000ms):让出锁等待一秒就会自动唤醒继续执行
 *
 *              sleep() 和 wait() 的区别
 *                  1.sleep是Thread的方法，而wait是Object的方法
 *                  2.sleep不需要强制和synchronized配合使用，但wait需要和synchronized一起用
 *                  3.sleep在睡眠的同时，不会释放对象锁的，但wait在等待的时候会释放对象锁
 * @Since 2021/6/21
 */
public class TestWaitNotify {
    /**
     * 正确使用wait notifyAll的姿势
     *
     * synchronized(lock) {
     *     while(条件不成立） {
     *         lock.wait();
     *     }
     *     // 干活
     * }
     *
     * 另外一个线程
     * synchronized(lock) {
     *     lock.notifyAll();
     * }
     *
     */
}
